// 这个模块用于管理axios，并设置基础的配置
import axios from 'axios'
import qs from 'qs'
import router from '@/router'

let baseUrl = ''  // 基础地址
if(process.env.NODE_ENV == 'development'){
    // 开发环境
    baseUrl = '/api'
}else if(process.env.NODE_ENV == 'production'){
    // 生成环境，不用代理
    baseUrl = 'http://localhost:3000/api'
}

// // 调用创建实例
// let http = axios.create({
//     // 定义当前实例的自定义配置
//     baseURL:baseUrl
// })

// 请求拦截
axios.interceptors.request.use((res)=>{
    let userinfo = JSON.parse( localStorage.getItem('userinfo') || '{}' )
    res.headers.authorization = userinfo.token;
    return res;
})

// 响应拦截
axios.interceptors.response.use((res)=>{
    if(res.data.msg == '请设置请求头，并携带验证字符串' || res.data.msg == '登录已过期或访问权限受限'){
        setTimeout(()=>{
            router.push('/login')
        },3000)
        ElMessage.warning(res.data.msg[0])
        return
    }
    return res.data;
})

// 封装get方法
// url 接口地址   params 数据参数对象
export const get = (url, params = {})=>{
    return axios.get(baseUrl + url, {params})
}

// 封装post方法
// isFile 是否为上传文件，默认不上传文件
export const post = (url, params = {}, isFile = false)=>{
    let data = null;
    if(isFile){
        // 上传
        data = new FormData();
        for(let attr in params){
            data.append(attr,params[attr])
        }
    }else{
        // 没有上传
        data = qs.stringify(params)
    }
    return axios.post(baseUrl + url, data);
}